 
	\section{逻辑运算}
	
	\subsection{逻辑与}
	逻辑与运算是指两个或多个逻辑变量同时满足某个条件时，结果才为真（逻辑值为1或True）。在数学符号中通常用 $\land$ 或 \& 表示。例如，对于逻辑变量 $A$ 和 $B$，逻辑表达式 $A \land B$ 只有当 $A$ 和 $B$ 同时为真时才为真，否则为假
	
	\begin{tikzpicture}[>=stealth]
		% 输入信号线及标记
		\draw[->] (-2,0) -- (-1,0) node[midway,above] {$A$};
		\draw[->] (0,-2) -- (0,-1) node[midway,right] {$B$};
		
		% 逻辑与门（圆圈表示）
		\draw[fill=white] (-0.5,-0.5) circle (0.5cm);
		\node at (-0.5,-0.5) {$\land$};
		
		% 输出信号线及标记
		\draw[->] (0.5,-0.5) -- (2,-0.5) node[midway,above] {$A \land B$};
	\end{tikzpicture}
	
	\subsection{逻辑或}
	逻辑或运算是指只要有一个或多个逻辑变量满足某个条件，结果就为真。在数学符号中通常用 $\lor$ 或 | 表示。例如，对于逻辑变量 $A$ 和 $B$，逻辑表达式 $A \lor B$ 当 $A$ 或 $B$ 至少有一个为真时即为真，只有当二者都为假时才为假。
	
	\subsection{非}
	逻辑非运算是对单个逻辑变量的取反操作，即将真变为假，假变为真。在数学符号中通常用 $\lnot$ 或 ! 表示。例如，对于逻辑变量 $A$，逻辑表达式 $\lnot A$ 当 $A$ 为真时为假，$A$ 为假时为真
	
	\subsection{逻辑异或}
	逻辑异或运算是指参与运算的两个逻辑变量必须有一个且只能有一个为真时，结果才为真。当两者都为真或都为假时，结果为假。在数学符号中通常用 $\oplus$ 表示。例如，对于逻辑变量 $A$ 和 $B$，逻辑表达式 $A \oplus B$ 当 $A$ 和 $B$ 值不同时为真，相同时为假
	
	\section{位图运算}
	位图运算（Bitmap Operations）是指针对位图数据结构进行的一系列高效、底层的位级别操作。位图是一种紧凑的数据结构，它将一系列离散元素（如整数、字符串索引等）映射到一个固定长度的位数组中，每位对应一个元素，值为0或1，表示该元素是否存在
	
	一个字节8个位:这些位按照从低位到高位（有时也称为从右到左）的顺序排列。每个位都有一个二进制值，可以是0或1。
	
	01010101的解释如下所述
	\begin{itemize}
		\item 第7位（b7）为0
		\item 第6位（b6）为1
		\item 第5位（b5）为0
		\item 第4位（b4）为1
		\item 第3位（b3）为0
		\item 第2位（b2）为1
		\item 第1位（b1）为0
		\item 第0位（b0）为1
	\end{itemize}
	
	\begin{enumerate}
		\item 整数类型:
		\begin{itemize}
			\item byte: 占用 1个字节，范围为 -128 到 127 , 即 ${-2}^7$ 到 $2^7-1$  ，默认值为 0。
			\item short: 占用 2个字节，范围为 -32,768 到 32,767（即 ${-2}^{15} $ 到 ${2^{15}-1}$），默认值为 0。
			\item int: 占用 4个字节，范围为 -2,147,483,648 到 2,147,483,647（即 ${−2^{31}}$ 到 $2^{31} - 1$），默认值为 0。
			\item long: 占用 8个字节，范围为 -9,223,372,036,854,775,808 到
			 9,223,372,036,854,775,807（即 ${-2^{63}}$ 到 $2^{63} - 1$），默认值为 0L。
			
		\end{itemize}
		
		\item 浮点数类型:
		\begin{itemize}
			\item float: 占用 4个字节，提供大约6-7位有效数字精度，范围大致为 ±1.4E-45 到 ±3.4028235E38（即 $\pm(2^{-149})$ 到 $\pm (2^{128})*(2^{-23})$），默认值为 0.0f。
			\item double: 占用 8个字节，提供大约15位有效数字精度，范围大致为 $\pm 4.9E-324$ 到 $\pm 1.7976931348623157E308$（即 $\pm(2^{-1074})$ 到 $\pm(2^{1023})*(2^{-52})$），默认值为 0.0d。
		\end{itemize}
		
		\item 字符类型:
		\begin{itemize}
			\item char: 占用 2个字节，18个位,18表示 Unicode 编码的一个字符，范围为 U+0000 到 U+FFFF（即 0 到 65,535），默认值为 '\u0000'
		\end{itemize}
		
		\item 布尔类型:
		\begin{itemize}
			\item boolean: 占用空间未明确规定在 Java 规范中，但大多数 JVM 实现会将其作为最小的原子类型处理，通常占用 1个字节 或更小的空间（取决于具体实现），表示逻辑值 true 或 false，默认值为 false。
		\end{itemize}
		
	\end{enumerate}
	
	\subsection{int示意图}
	如果我们的数据范围是固定的,那么使用位图比使用HashSet更节省空间,int类型的位图,一个int,4个字节32个位即32个0,1组成;初始化如下图
	
	\begin{adjustbox}{width=\textwidth}
		\begin{tikzpicture}
			[every node/.style={draw},
			row 1/.style={red},
			row 2/.style={green!50!black},
			row 3 column 3/.style={blue}]
			\matrix
			{
				\node{0}; &[-1mm] \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \\
				\node{31}; & \node{30}; & \node{29}; & \node{28}; & \node{27}; & \node{26}; & \node{25}; & \node{24}; & \node{23}; & \node{22}; & \node{21}; & \node{20}; & \node{19}; & \node{18}; & \node{17}; & \node{16}; & \node{15}; & \node{14}; & \node{13}; & \node{12}; & \node{11}; & \node{10}; & \node{9}; & \node{8}; & \node{7}; & \node{6}; & \node{5}; & \node{4}; & \node{3}; & \node{2}; & \node{1}; & \\
			};
		\end{tikzpicture}
	\end{adjustbox}
	\subsubsection{向位图中添加数据}
	向位图中的add,添加数据操作,例如add(5),此时5对32取余得5,那么就把第5个位置的二进制设置为1 \[ 5 \equiv 5 \pmod{32} \]
	
		\begin{adjustbox}{width=\textwidth}
		\begin{tikzpicture}
			[every node/.style={draw},
			row 1/.style={red},
			row 2/.style={green!50!black},
			row 3 column 3/.style={blue}
			]
			\matrix
			{
				\node{0}; &[-1mm] \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{1}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \\
				\node{31}; & \node{30}; & \node{29}; & \node{28}; & \node{27}; & \node{26}; & \node{25}; & \node{24}; & \node{23}; & \node{22}; & \node{21}; & \node{20}; & \node{19}; & \node{18}; & \node{17}; & \node{16}; & \node{15}; & \node{14}; & \node{13}; & \node{12}; & \node{11}; & \node{10}; & \node{9}; & \node{8}; & \node{7}; & \node{6}; & \node{5}; & \node{4}; & \node{3}; & \node{2}; & \node{1}; & \\
			};
		\end{tikzpicture}
	\end{adjustbox}
	
		向位图中的add,添加数据操作,例如add(7),此时7对32取余得7,那么就把第7个位置的二进制设置为1 \[ 7 \equiv 7 \pmod{32} \]
	
	\begin{adjustbox}{width=\textwidth}
		\begin{tikzpicture}
			[every node/.style={draw},
			row 1/.style={red},
			row 2/.style={green!50!black},
			row 3 column 3/.style={blue}
			]
			\matrix
			{
				\node{0}; &[-1mm] \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{1}; & \node{0}; & \node{1}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \\
				\node{31}; & \node{30}; & \node{29}; & \node{28}; & \node{27}; & \node{26}; & \node{25}; & \node{24}; & \node{23}; & \node{22}; & \node{21}; & \node{20}; & \node{19}; & \node{18}; & \node{17}; & \node{16}; & \node{15}; & \node{14}; & \node{13}; & \node{12}; & \node{11}; & \node{10}; & \node{9}; & \node{8}; & \node{7}; & \node{6}; & \node{5}; & \node{4}; & \node{3}; & \node{2}; & \node{1}; & \\
			};
		\end{tikzpicture}
	\end{adjustbox}
	
	
		如果数据范围超过了32,也就是超过了32个位,那么我们就使用一个int 类型的数组,32个int 类型的数组就可以表示1024个数据,比较add(37),\[ 5 \equiv 37 \pmod{32} \]
	
	\begin{adjustbox}{width=\textwidth}
		\begin{tikzpicture}
			[every node/.style={draw},
			row 1/.style={red},
			row 2/.style={green!50!black},
			row 3 column 3/.style={blue}
			]
			\matrix
			{
				\node{0}; &[-1mm] \node{1}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; &  \\
				\node{38}; & \node{37}; & \node{36}; & \node{35}; & \node{34}; & \node{33}; & \node{32}; & \node{31}; & \node{30}; & \node{29}; & \node{28}; & \node{27}; & \node{26}; & \node{25}; & \node{24}; & \node{23}; & \node{22}; & \node{21}; & \node{20}; & \node{19}; & \node{18}; & \node{17}; & \node{16}; & \node{15}; & \node{14}; & \node{13}; & \node{12}; & \node{11}; & \node{10}; & \node{9}; & \node{8}; & \node{7}; & \node{6}; & \node{5}; & \node{4}; & \node{3}; & \node{2}; & \node{1}; & \\
			};
			
			\draw[red] (-6.7,-2) -- (-6.7,2);
			\draw[red] (-11.7,-2) -- (-11.7,2);
			\draw (0,-1.5) node {arr[0]};
			\draw (-8.5,-1.5) node {arr[1]};
			\draw (-12.5,-1.5) node {arr[...]};
			
		\end{tikzpicture}
		 
		\end{adjustbox}
   \subsubsection{检查数据是否存在}
 	constrains(5)这个操作,就是判断第 5 个二进制位是0, 还是1 如果是1 就说明5 存在,否则就不存在
 	
 	\subsubsection{从位图中删除数据}
 	remove(7) 这个操作, 就是把第 7 个二进制位置为0 ;
 	
 		\begin{adjustbox}{width=\textwidth}
 		\begin{tikzpicture}
 			[every node/.style={draw},
 			row 1/.style={red},
 			row 2/.style={green!50!black},
 			row 3 column 3/.style={blue}
 			]
 			\matrix
 			{
 				\node{0}; &[-1mm] \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \node{1}; & \node{0}; & \node{0}; & \node{0}; & \node{0}; & \\
 				\node{31}; & \node{30}; & \node{29}; & \node{28}; & \node{27}; & \node{26}; & \node{25}; & \node{24}; & \node{23}; & \node{22}; & \node{21}; & \node{20}; & \node{19}; & \node{18}; & \node{17}; & \node{16}; & \node{15}; & \node{14}; & \node{13}; & \node{12}; & \node{11}; & \node{10}; & \node{9}; & \node{8}; & \node{7}; & \node{6}; & \node{5}; & \node{4}; & \node{3}; & \node{2}; & \node{1}; & \\
 			};
 		\end{tikzpicture}
 	\end{adjustbox}
 	

	\subsection{long示意图}
	一个long,8个字节,64个位即64个0,1组成,目前所有的数据类型,64个位已经是最高了,其原理和int类型一致,这里就不再赘述了
	
 